package com.yuw.stringtool;

public class TestDriver {
    public static void main(String[] args) {
        test01();
        System.out.println("--------------------------------------------");
        test02();
        System.out.println("--------------------------------------------");
        test04();

    }

    /**
     * instanceof关键字
     */
    public static void test04() {
        String str = "sss";
        if(str instanceof String){
            System.out.println("str 变量是一个字符串");
        }

        // isntanceof关键字支持多态
        if(str instanceof Object){
            System.out.println("str 变量是一个Object类型");
        }

    }
    /**
     * Object工具类
     */
    public static void test03() {
        Object obj = new Object();
        String str0 = "";
        // String类重写了equals方法
        str0.equals("222");
    }

    /**
     * String类在内存中的存储模型
     */
    public static void test02() {
        String str0 = "小明";  // 字符串池（栈）
        String str01 = "小明"; // 字符串池（栈）
        String str02 = "小明";
        String str1 = new String("小明"); // 内存堆
        String str11 = new String("小明");// 内存堆

        // == 相等判定运算符；用于判定两个值是否相等； 对象类型的变量使用 == 判定是hashcode码是否相同；也就是判定的 内存地址是否相同
        System.out.println("str0==str01:" + (str0 == str01));   // true  -- str0和str1存储在同一个内存单元
        System.out.println("str1==str11:" + (str1 == str11));   // false -- str1和str11存储在不同的内存单元
        System.out.println("str0==str1:" + (str0 == str1));     // false -- str0和str1存储在不同的内存单元
        System.out.println("str01==str11:" + (str01 == str11)); // false -- str01和str11存储在不同的内存单元

        System.out.println("str0==str02:" + (str0 == str02));   // true  -- str0和str1存储在同一个内存单元

    }


    /**
     * String类常用的方法
     */
    public static void test01() {
        String str0 = "jksajflkwoiefjlkdsjflkasjkhf;ksajflkajs;kfjsa;lk";
        // 部分常用的方法
        String str1 = str0.substring(2, 7);
        System.out.println("2-7位置的子串：" + str1);

        System.out.println(str0.contains("sajfl"));

        System.out.println(str0.indexOf("sajfl"));
    }
}
